# -*- coding:utf-8 -*-
# @Desc : 
# @Author : Administrator
# @Date : 2019-07-02 15:45

# 推导式comprehensions(又称解析式),是Python的一种独有特性
# 推导式是可以从一个数据序列构建另一个新的数据序列的结构体。
# Pyhon共有三种推导,在Python2和3中都有支持: 列表(list)推导式, 字典(dict)推导式, 集合(set)推导式


## 列表推导式: 列表推导式是用可迭代对象依次生成带有多个元素的列表的表达式
# 作用：用简易方法生成列表
# 语法一: [ 表达式 for 变量 in 可迭代对象 ]
# 语法二: [ 表达式 for 变量 in 可迭代对象 if 真值表达式 ]
# 示例: 生成一个数值为1~9的平方的列表
# L = [ x*x for x in range(1, 10) ]
# 示例: 得到50以内能被2整除的整数列表
L = [ x for x in range(1, 51) if x % 2 == 0 ]

# 列表推导式的嵌套语法:
# [ 表达式1
#   for 变量1 in 可迭代对象1 if 真值表达式1
#   for 变量2 in 可迭代对象2 if 真值表达式2
#   ...]
# 示例:
# L1 = [2, 3, 5]
# L2 = [7, 11, 13]
# # 将L1中的全部元素与L2中的全部元素依次相乘后放到列表L3中
# L3 = [x * y for x in L1 for y in L2]
# print(L3)


## 字典推导式: 字典推导式是用可迭代对象依次生成字典内元素的表达式
# 语法：{ 键表达式 : 值表达式 for 变量 in 可迭代对象 [if 真值表达式] }
# 注: []的内容代表可省略
# 示例: d = { x : x**2 for x in range(10)}  # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}


# 集合推导式: 用可迭代对象来创建(生成)集合的表达式
# 语法: { 表达式 for 变量 in 可迭代对象 [if 真值表达式] }
# 注: [] 括号部分内容代表可省略
# 示例:
# L = [2, 3, 5, 7, 3, 5, 7, 11]
# s = { x**2 for x in L }  # s = {4, 9, 25, 49, 121}
